package com.copm.ifm.common.process.core.service;

import com.copm.ifm.common.process.entity.excute.ProcessExecute;
import com.copm.ifm.common.process.entity.excute.ProcessExecuteUser;
import com.copm.ifm.common.process.entity.template.bo.ProcessDetailBO;

import java.io.Serializable;
import java.util.List;

/**
 * 流程业务接口
 *
 * @author zzf
 * @date 2021/3/29 14:33
 */
public interface IProcessService {


    /**
     * 根据流程定义的名称查询流程详情
     * <p>
     * 同一时刻 同一个的流程只能有一个有效的
     *
     * @param processDefineName 流程定义的名称
     * @return 流程详情对象
     */
    ProcessDetailBO getProcessDetailByProcessDefineName(String processDefineName);

    /**
     * 添加流程执行信息
     */
    void addProcessExecute(ProcessExecute processExecute);

    /**
     * 根据id修改流程执行信息
     */
    void modifyProcessExecuteById(ProcessExecute processExecute);

    /**
     * 添加流程执行人
     */
    void addProcessExecuteUser(ProcessExecuteUser processExecuteUser);

    /**
     * 根据id查询流程执行数据
     */
    ProcessExecute getProcessExecuteById(Serializable id);

    /**
     * 查询指定流程执行id中指定执行节点序号的审核人id集合
     *
     * @param processExecuteId 流程执行id
     * @param runPointNum      执行的节点序号
     * @return 该流程该节点的审核人id集合
     */
    List<Integer> getProcessUserIdByExecuteIdAndPointNum(Long processExecuteId, int runPointNum);
}
